PART 01. 파이썬 기초
[학습 목표]
- 변수의 개념을 설명한다.
- 자료형의 개념과 종류를 설명한다.
- 대입 연산자와 산술 연산자를 설명한다.
- 다양한 형태의 자료를 입력받아 처리한 뒤 결과를 출력한다.
- 변수와 연산자를 이용하여 프로그램을 작성한다.
📖 목차
2.1 변수2.2 자료형
2.3 입력과 출력
2.4 연산자
2.5 [플러스 예제] 시간 단위 변환기
2.6 [플러스 예제] 주문 금액 계산기
2.1 변수
1) 변수의 개념
- 변수(variable)는 프로그램이 실행되는 동안 값을 저장하는 공간이다.
- 변수에 값을 저장할 때는 대입 연산자
=를 사용한다. - 변수에 저장된 값을 출력할 때도
print함수를 사용한다.
예: age 변수에 20을 저장하고 출력한다.
age = 20
print(age)
주의: 변수 이름을 따옴표로 감싸면 변수의 값이 아니라 문자열 자체가 출력된다.
age = 20
print('age')
2) 변수의 값은 덮어쓴다
- 변수에는 하나의 값만 저장할 수 있다.
- 새로운 값을 대입하면 기존 값은 지워지고 새로운 값으로 바뀐다.
age = 20
print(age)
age = 21
print(age)
3) 변수에 값 대입하기
대입 연산자
=기호를 대입(할당) 연산자라 한다.- 오른쪽의 값을 계산한 뒤 왼쪽 변수에 저장한다.
예: 이름과 나이를 변수에 대입하고 함께 출력한다.
name = '홍길동'
age = 18
print(name, '나이:', age)
여러 변수에 값 대입하기
- 파이썬에서는 여러 변수에 같은 값을 대입할 수 있다.
- 연쇄 대입은 오른쪽에서 왼쪽으로 수행된다.
a = b = c = 7
print(a, b, c)
복합 대입 연산자
- 복합 대입 연산자는 연산한 값을 다시 같은 변수에 대입하는 연산자이다.
- 예를 들어
a = a + 7은a += 7로 쓸 수 있다. +=,-=,*=,/=,//=,%=등이 있다.
복합 대입 연산자 사용 예:
a = 100
a += 10
print(a) # 110
a *= 2
print(a) # 220
a //= 7
print(a) # 31
a %= 10
print(a) # 1
4) 변수 이름의 규칙
- 첫 글자는 문자 또는 밑줄(
_)이어야 한다. - 나머지 글자는 문자, 숫자, 밑줄(
_)을 사용할 수 있다. - 영문 대문자와 소문자는 구분한다.
- 키워드(예약어)는 변수 이름으로 사용할 수 없다.
LAB: 두 변수의 값 교환하기
변수 a의 값 7과 변수 b의 값 11을 교환한다.
(1) 임시 변수를 이용한 방법
a = 7
b = 11
temp = a
a = b
b = temp
print(a, b)
(2) 파이썬의 다중 대입을 이용한 방법
a = 7
b = 11
a, b = b, a
print(a, b)
LAB: 배수 구하기
복합 대입 연산자 +=를 이용하여 3의 배수 중 처음 네 개(3, 6, 9, 12)를 구한다.
a = 3
print(a)
a += 3
print(a)
a += 3
print(a)
a += 3
print(a)
2.2 자료형
1) 자료형의 개요
- 정수, 부동소수점수, 문자열, 불 등 데이터의 종류를 자료형(data type)이라 한다.
- 정수형은 소수점이 없는 수, 부동소수점수형은 소수점이 있는 수이다.
- 불형은
True(참),False(거짓) 값만을 가진다. - 자료형을 확인할 때는
type함수를 사용한다.
print(type(2024)) # int
print(type(3.14)) # float
print(type('Python')) # str
print(type(True)) # bool
2) 정수형
- 정수형은 20, 2025처럼 소수점이 없는 수이다.
- 2진수는
0b, 8진수는0o, 16진수는0x로 시작한다. - 파이썬에서는 10진수 외의 진수는 상대적으로 덜 사용한다.
a = 20 # 10진수
b = 0o34 # 8진수
c = 0xA1 # 16진수
d = 0b1110 # 2진수
print(a, b, c, d) # 20 28 161 14
3) 부동소수점수형
- 부동소수점수는 소수점 표현 방식과 지수 표현 방식이 있다.
- 지수 표현은
1.23e5처럼e를 사용한다.
a = 3.14
b = 1.23e5
print(a, b) # 3.14 123000.0
4) 불형
- 불형은 참/거짓 값을 나타내는 자료형이다.
- 비교식의 결과는 불형이다.
a = (10 > 20)
print(a) # False
5) 문자열형
- 문자열은 0개 이상의 문자로 이루어지며 작은 따옴표(
' ') 또는 큰 따옴표(" ")로 감싸 표현한다. +연산자로 문자열을 연결할 수 있다.
print('Hi! ' + 'Python')
LAB: 다양한 자료형
문자열, 정수, 부동소수점수를 함께 다룬다.
print('convergence' + ' programming')
print(23 - 25)
print(1.23 + 1.23e-1)
2.3 입력과 출력
1) 입력: input 함수
- 사용자로부터 데이터를 입력받을 때
input함수를 사용한다. input은 안내문을 출력하고, 입력받은 값을 문자열로 반환한다.
문자열 입력받기
name = input('이름: ')
age = input('나이: ')
print(name, '나이:', age)
정수 형식 입력받기: int 함수
input으로 받은 값은 문자열이므로, 숫자로 계산하려면 형 변환이 필요하다.- 정수로 바꾸려면
int함수를 사용한다.
a = int(input('정수 1: '))
b = int(input('정수 2: '))
print(a - b)
부동소수점수 형식 입력받기: float 함수
- 소수점을 가진 수를 입력받아 계산하려면
float로 변환한다.
minute = float(input('분: '))
second = minute * 60
print(second)
2) 출력: print 함수
- 값을 화면에 출력할 때
print함수를 사용한다. - 여러 값을 출력하려면 콤마(
,)로 구분하여 나열한다. - 기본적으로
print는 출력 후 줄바꿈을 수행한다. - 줄바꿈 대신 공백 등을 출력하려면
end옵션을 사용한다. print()처럼 출력 값이 없는print는 빈 줄을 출력한다.
a = 10
b = 20
print(a)
print(b)
print(a, end=' ')
print(b)
f-문자열
print에서 콤마로 여러 값을 출력하면 값 사이에 공백이 들어간다.- 불필요한 공백을 없애거나 형식을 제어하려면 f-문자열(f-string)을 사용한다.
- 문자열 앞에
f또는F를 붙이고, 변수는 중괄호({})로 감싼다. - 형식 지정은
{변수:형식}형태로 작성한다. (예:d는 정수,f는 부동소수점수)
name = '홍길동'
age = 20
print(f'{name}의 나이는 {age}이다.')
print(f'{age:3d}') # 정수 폭 지정
pi = 3.141592
print(f'{pi:0.2f}') # 소수점 아래 2자리
LAB: 원의 넓이 구하기
원의 반지름을 입력받아 원의 넓이를 계산하여 출력한다.
r = float(input('반지름: '))
area = 3.14 * r * r
print(f'원의 넓이: {area:0.2f}')
2.4 연산자
1) 연산과 연산자
- 연산(operation)은 덧셈, 뺄셈처럼 일정한 규칙에 따라 계산하는 것이다.
- 연산을 수행하는 기호를 연산자라 한다.
2) 산술 연산자
- 산술 연산자는 덧셈(
+), 뺄셈(-), 곱셈(*), 나눗셈(/) 등을 수행한다. - 정수 나눗셈의 몫은
//, 나머지는%로 구한다. - 거듭제곱은
**로 계산한다.
a = 7
b = 3
print(a + b) # 10
print(a - b) # 4
print(a * b) # 21
print(a / b) # 2.333...
print(a // b) # 2
print(a % b) # 1
print(a ** b) # 343
3) 연산자 우선순위
- 여러 연산자가 함께 있는 식에서는 연산자 우선순위에 따라 계산 순서가 달라진다.
- 일반적으로
**→*,/,//,%→+,-순으로 우선순위가 높다. - 우선순위가 같은 연산자가 여러 개면 정해진 결합 규칙에 따라 순서가 결정된다.
- 우선순위와 상관없이 순서를 바꾸려면 괄호(
())를 사용한다.
a, b, c = 2, 3, 4
print(a + b * c) # 14
print((a + b) * c) # 20
LAB: 남녀 비율 계산하기
남성 지원자 수와 여성 지원자 수를 입력받아 비율을 계산한다.
male = int(input('남성 지원자 수: '))
female = int(input('여성 지원자 수: '))
total = male + female
male_ratio = male / total * 100
female_ratio = female / total * 100
print(f'남성 비율: {male_ratio:0.1f}%')
print(f'여성 비율: {female_ratio:0.1f}%')
LAB: 길이 단위 변환하기
센티미터 단위의 길이를 입력받아 미터와 센티미터로 변환한다.
cm = int(input('센티미터: '))
m = cm // 100
remain = cm % 100
print(f'{m}m {remain}cm')
2.5 [플러스 예제] 시간 단위 변환기
1) 분 → 시간/분 변환
분 단위 시간을 입력받아 시간과 분으로 바꾸는 프로그램을 만든다.
- 전체 분(
min)을 60으로 나눈 몫이 시간(hour)이다. - 전체 분(
min)을 60으로 나눈 나머지가 분(min)이다.
min = int(input('분: '))
hour = min // 60
min = min % 60
print(f'{hour}시간 {min}분')
2) 초 → 시간/분/초 변환
초 단위 시간을 입력받아 시간, 분, 초로 바꾼다.
- 전체 초(
second)를 3600으로 나눈 몫이 시간(hour)이다. - 남은 초를 60으로 나눈 몫이 분(
min)이고, 남은 값이 초(second)이다.
second = int(input('초: '))
hour = second // 3600
second = second % 3600
min = second // 60
second = second % 60
print(f'{hour}시간 {min}분 {second}초')
2.6 [플러스 예제] 주문 금액 계산기
1) 주문 금액 계산기 I
각 음료의 주문 수를 입력받아 합계 금액을 계산한다. 입력값은 int로 변환하여 사용한다.
americano_num = int(input('아메리카노 주문 수: '))
latte_num = int(input('라떼 주문 수: '))
green_tea_num = int(input('녹차 주문 수: '))
sum = americano_num * 2000 + latte_num * 3000 + green_tea_num * 2500
print(f'주문 금액: {sum}원')
2) 주문 금액 계산기 II
음료 가격을 변수로 분리하여 관리성을 높인다. 가격이 바뀌면 가격 변수만 바꾸면 된다.
americano_price = 2000
latte_price = 3000
green_tea_price = 2500
sum = 0
americano_num = int(input('아메리카노 주문 수: '))
sum += americano_num * americano_price
latte_num = int(input('라떼 주문 수: '))
sum += latte_num * latte_price
green_tea_num = int(input('녹차 주문 수: '))
sum += green_tea_num * green_tea_price
print(f'주문 금액: {sum}원')